共计 948 个字符,预计需要花费 3 分钟才能阅读完成。
前言
用过 CDN 的朋友都知道,如果 WordPress 开启 CDN 之后别人在你的文章中评论,IP 则显示的是该人所在地区的 CDN 节点的 IP,而不会显示该人的真实 IP,这样的话其实不会有很大的问题,不过对于垃圾评论过多的网站来说,这无疑是一个噩梦,因为不可以进行 IP 拦截。解决办法(一)
本人之前在网上找了很多的方法,之后在网上找到了如下的解决办法,把改代码加入到 wp-config.php 的 <?php 之后,之前一直都不适用,后来经过反复调试发现是参数调取错误。
源代码如下
if(isset($_SERVER['HTTP_X_FORWARDED_FOR
'])) {$list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR
']);
$_SERVER['REMOTE_ADDR'] = $list[0];
}
我们要把里面的
HTTP_X_FORWARDED_FOR
更改成为自己所用的 CDN 的来源 IP 端口,例如又拍云的就为
HTTP_X_REAL_IP
所有我们调用又拍云的来源 IP 的时候在 wp-config.php 中就应该这样写:
if(isset($_SERVER['HTTP_X_REAL_IP
'])) {$list = explode(',',$_SERVER['HTTP_X_REAL_IP
']); $_SERVER['REMOTE_ADDR'] = $list[0]; }
解决办法(二)
根据上面的参数,我们也可以得出下方的方法,在主题的 functions.php 中底部添加以下代码:
function GetIP() {$IP = str_replace(“,“,“”,str_replace($_SERVER['REMOTE_ADDR'],“”,$_SERVER["HTTP_X_REAL_IP
"])); if ($_SERVER["HTTP_X_REAL_IP
"] !=“”) {$_SERVER['REMOTE_ADDR'] = $IP; } else {$_SERVER['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR']; }}add_action(‘init’,‘GetIP’);